#ifndef API_H_
#define API_H_

#include "scatu/Functions.h"
#include "scatu/Common.h"
#include "scatu/DataAdapters.h"
#include "scatu/RequestData.h"

namespace scatu {

template<TSide S>
class Api
    {
public:
    
    typedef RRequestData1<TDesC8> ReadTagRetType;
    typedef RRequestData4<TDesC8, TDesC8, TDesC8, TInt> ReadTagArgsType;
    RSynchronousRequest<S, EReadTagSync, ReadTagRetType, ReadTagArgsType> iReadTagSync;
    RAsynchronousRequest<S, EReadTagAsync, ReadTagRetType, ReadTagArgsType> iReadTagAsync;
    
    typedef RRequestData0 SetForegroudRetType;
    typedef RRequestData2<TDesC8, TBool> SetForegroudArgsType;
    RSynchronousRequest<S, ESetForeground, SetForegroudRetType, SetForegroudArgsType> iSetForeground;
    
    typedef RRequestData1<TInt> SendMessageRetType;
    typedef RRequestData4<TDesC8, TDesC8, TDesC8, TInt> SendMessageArgsType;
    RSynchronousRequest<S, ESendMessage, SendMessageRetType, SendMessageArgsType> iSendMessage;
    
    typedef RRequestData1<TInt> SetResponseRetType;
    typedef RRequestData4<TDesC8, TDesC8, TDesC8, TInt> SetResponseArgsType;
    RSynchronousRequest<S, ESetResponse, SetResponseRetType, SetResponseArgsType> iSetResponse;
    
    typedef RRequestData1<TDesC8> TransactionLogRetType;
    typedef RRequestData1<TDesC8> TransactionLogArgsType;
    RSynchronousRequest<S, ETransactionLog, TransactionLogRetType, TransactionLogArgsType> iTransactionLog;
    };
} // namespace

#endif /* API_H_ */
